Managing Concurrent Content Playback

ABSTRACT

A content server may receive from a user device a request for a content asset and may send to the playback device a permit for accessing the content asset. The permit may be used by the content server in order to enforce a concurrency restriction, or a number of concurrent playbacks of one or more content assets desired or permitted by the playback device. In response to receiving a request for a content asset segment associated with a content asset, the content server may determine whether the number of permits currently granted to the playback device exceeds the number of desired or permitted accesses by the playback device, or a group of playback devices, to the content asset or one or more content assets. If so, then the content server may discontinue sending to the playback device any further content asset segments associated with that content asset.

BACKGROUND

Service providers may impose a limit on a number of concurrent playbacksof content by one or more customers. For example, the content server mayimpose a limit on the number of streams made available to a playbackdevice, to a particular household, or to a set of devices or households.Such restrictions are known as concurrency restrictions. Concurrencyrestrictions may be enforced at the time of acquisition of the contentasset, e.g., where a playback device may obtain a token at the time ofpurchasing or beginning playback of the content asset. Systems may relyon the playback device to return the token after playback is complete.However, this may potentially cause problems at the content server. Forexample, a playback device may be susceptible to attacks by which aproxy between the playback device or client and the content server maytrick the playback device into continuing to play the content asset.Additionally or alternatively, the playback device may be manipulated orotherwise fail to honor the concurrency checks. Therefore, it may bedesirable to provide a system whereby a content server is responsiblefor managing and enforcing the concurrency policy on behalf playbackdevices.

SUMMARY

Methods and systems are disclosed for enforcing concurrencyrestrictions. A content server may receive from a user device a requestfor a content asset and may send to the user device permission (e.g., apermit) for accessing the content asset. The permit may be used by thecontent server in order to enforce a concurrency restriction, or anumber of concurrent playbacks of one or more content assets desired orpermitted by the user device. In response to receiving a request for acontent asset segment associated with a content asset, the contentserver may determine whether the number of permits currently granted toone or more user devices comprising the user device exceeds the numberof permitted accesses by the user device to the one or more contentassets. If so, the content server may discontinue sending to the userdevice any further content asset segments associated with that contentasset.

BRIEF DESCRIPTION OF THE DRAWINGS

The following detailed description is better understood when read inconjunction with the appended drawings. For the purposes ofillustration, examples are shown in the drawings; however, the subjectmatter is not limited to specific elements and instrumentalitiesdisclosed. In the drawings:

FIG. 1 is a block diagram of an example system;

FIG. 2 is a flow chart of an example method;

FIG. 3 is a flow chart of an example method;

FIG. 4 is a flow chart of an example method;

FIG. 5 is a flow chart of an example method;

FIG. 6 is a flow chart of an example method; and

FIG. 7 is a block diagram of an example computing device.

DETAILED DESCRIPTION OF ILLUSTRATIVE EMBODIMENTS

Concurrency restrictions may be imposed in order to limit a number ofconcurrent playback sessions of content assets by one or more customers.A content server may grant to a playback device a token that theplayback device may use to access a content asset.

FIG. 1 shows an example system 100 for enforcing concurrencyrestrictions.

The system 100 may comprise a user device 102 and a content server 120.The system 100 may allow a content server 120 to enforce the concurrencyrestrictions without relying on the end user (e.g., the playback device)to enforce such restrictions.

The user device 102 may be configured to receive a content asset fromthe content server 120 and to cause playback of the content asset. Theuser device 102 may be a playback device, such as a desktop computer, alaptop, a television, a smartphone, a tablet, a virtual reality headset,or any other device capable of presenting playback of a content asset toa user of the playback device 102. The user device 102 may comprise aprocessor 104, a memory 106 and a playback module 108. The user device102 may also be referred to herein as the playback device 102. However,it is understood that the user device 102 is not limited to a playbackdevice and may comprise any type of device capable of being operated bya user.

The processor 104 may be configured to process information received fromthe content server 120 or from a user of the playback device 102. A userof the playback device 102 may generate a command using one or morefunctions of the playback device 102. The user may generate a command,for example, by pressing one or more buttons on the playback device 102,interacting with a user interface presented by the playback device 102,speaking to the playback device 102 using a microphone located on theplayback device 102, or otherwise interacting with playback device 102.In response to receipt of a user command, such as a user pressing a“play” button (e.g., by clicking a mouse), the processor 104 may processthe command and may execute the command by causing playback of a contentasset selected by the user. Additionally or alternatively, the processor104 may be configured to process one or more content assets receivedfrom the content server 120. The processor 104 may determine when tocause playback of the received content asset segments or may determineto queue one or more of the received content asset segments in thememory 106 for playback at a later time.

The memory 106 may be configured to store one or more content assetsreceived from the content server 120. The playback device 102 mayreceive multiple content asset segments from the content server 120 andmay need to store a portion of those content asset segments in thememory 106 until they are ready for playback. The memory 106 maycomprise a queue configured to store a number of content asset segmentssuch that they may be accessed for playback by the playback device 102at a later time. The memory 106 may store additional items received fromthe content server, such as a manifest and one or more advertisementsfor playback to a user. Additionally or alternatively, the memory 106may store user data such as user preferences and passwords.

The playback module 108 may be configured to cause playback of a contentasset. The content asset may comprise any content capable of beingplayed back by the playback device 102, such as a television asset, amovie asset, or content that is capable of being streamed via theInternet. The content asset may be in any one of a variety of formats,such as, for example, H.264, MPEG-4 Part 2, or MPEG-2. The content assetmay be transmitted using one or more standards such as SCTE 35 or otherspecifications.

The content asset may comprise a plurality of content asset segments.The content asset segments may correspond to a portion of the contentasset, such as a two second portion of the content asset. For example, athirty minute television content asset may comprise nine hundred contentasset segments, each being about two seconds in duration. There may be amanifest associated with the content asset that provides an identifier,such as a uniform resource identifier (URI), for each content assetsegment. The identifier may be used by the playback device to requestthat a particular content asset segment be transmitted to the playbackdevice from the content server. Each of the content asset segments thatform the content asset may be sent to the playback devicesimultaneously. Additionally or alternatively, one or more of thecontent asset segments may be sent to the playback device 102 as theybecome available and/or as requested by the playback device 102. Theplayback module 108 may comprise a presentation component such as atelevision or a computer monitor or may otherwise be in communicationwith a presentation component in order to present the one or morecontent asset segments to a user of the playback device 102.

The content server 120 may be configured to send to the playback device102 one or more content asset segments. The content server 120 may beoperated by, for example, a cable provider, an Internet provider, anetwork provider, a content provider, a data provider, etc. As discussedherein, the content server 120 may be configured to enforce one or morepolicies, such as concurrency restrictions. The content server 120 maycomprise one or more of an identity service 122, a selector service 124,a server side concurrency service 126, a manifest service 128, aredirect service 130, a database 132 and a content delivery network 134.A “service” as the term is used herein may comprise any type ofhardware, software, or combination of hardware and software capable ofperfoming the functions described in connection with that service.

The identity service 122 may be configured to receive a request from theplayback device 102 to access the content server 120. The identityservice 122 may be configured to maintain a database of one or moreplayback devices identifiers and to authenticate a login by the one ormore playback devices 102 using the one or more playback deviceidentifiers. The identity service 122, in response to authenticating thelogin by the playback device 102, may be configured to send to theplayback device 102 a token. The token may be used by the identityservice 122 and/or any of the other entities associated with the contentserver 120 as proof that the playback device 102 has initiated a contentsession with the content server 120. The token may also be used by theone or more other entities in order to retrieve more detailedinformation about the playback device 102.

The selector service 124 may be configured to receive from the playbackdevice 102 a request to access content provided by the content server120. The request to access the content may comprise the token. Theselector service 124 may be configured to determine one or morecharacteristics of the playback device and/or a one or morecharacteristics of a user of the playback device based on informationcontained in the token. For example, the selector service 124 mayreceive the request to access the content and determine an appropriatecontent asset for playback by the playback device 102. The selectorservice 124 may consider one or more characteristics or conditions, suchas the type of playback device requesting content playback or a networkbandwidth, in determining an appropriate content asset for playback bythe playback device 102.

The selector service 124 may be configured to enforce one or morerestrictions, such as one or more concurrency restrictions. Theconcurrency restrictions may be enforced in order to limit a number ofconcurrent playback sessions by one or more playback devices. However,it is understood that the selector service 124 may be configured toenforce any type of restriction, such as a geographic restriction. Forexample, the selector service 124 may determine that certain content isonly available in North America. In response to receiving a request forthe content from a playback device located in Europe, the selectorservice 124 may determine to reject that request for the content.

The server side concurrency service 126 may be configured to receive arequest to acquire permission (e.g., a permit) for accessing one or morecontent assets. The permit may be any indication received at theplayback device 102 that access to a content asset or portion of acontent asset has been allowed by the content server 120. The serverside concurrency service 126 may be configured to obtain the permit andto associate the permit with the token for the playback device 102. Thetoken may be used by the server side concurrency service 126 todetermine whether the playback device 102 is authorized to obtain apermit for accessing the one or more content assets. Concurrencyrestrictions may be imposed in order to control, e.g., limit, a numberof concurrent playback sessions by one or more playback devices of oneor more content assets. Thus, the number of active permits issued by theserver side concurrency service may correspond to the number of desiredor permitted concurrent playback sessions by the service provider. Thenumber of desired concurrent playback sessions may include thresholdsbased on various considerations such as bandwidth, video processingavailability and capability such as encoding and packaging,

The manifest service 128 may be configured to receive a request for acontent asset playlist from the playback device 102. The content assetplaylist may be referred to herein and in the claims as a manifest. Thecontent asset playlist may comprise one or more identifiers associatedwith the one or more content asset segments. Each identifier of acontent assest segment may comprise a uniform resource identifer (URI)or locator (URL) that serves as a link to the content asset segment onthe content delivery network 134. The manifest service 128 may beconfigured to alter the content playlist such that the links in thecontent playlist direct the playback device 102 to download the contentasset segments from the redirect service 130. Thus, instead ofdownloading the content asset segment directly from the content deliverynetwork 134, the playback device 102, upon selection of a link (e.g.,URI/URL) in the playlist, may be directed to download the content assetsegment from the redirect service 130. The manifest service 128 may beconfigured to alter each of the links in the playlist or to alter only aportion of the links in the playlist. For example, upon selection of afirst link, the playback device 102 may be directed to download thecontent asset segment from the content delivery network 134, and uponselection of another link, the playback device 102 may be redirected tothe redirect service 130.

The redirect service 130 may be configured to receive a request from theplayback device 102 for a content asset segment. The playback device 102may request the content asset segment using the one or more links in theplaylist provided by the manifest service 128. The redirect service 130may be configured to locate the content asset corresponding to therequest and to send to the playback device 102 the content assetsegment. The redirect service 130 may direct the playback device 102 toa location to retrieve the requested content asset segment. The redirectservice 130, in response to receiving a request for a content assetsegment from the playback device 102, may redirect the playback device102 to the content delivery network 134 in order to retrieve the contentasset segment. The request for a content asset segment may comprise anindication to update the permit associated with content asset segment.In response to receiving such a request, the redirect service may beconfigured to send to the server side concurrency service 126 aninstruction to verify that the number of outstanding permits does notexceed the limit imposed by the content server 120.

The database 132 may be configured to store the one or more permits. Thedatabase 132 may be configured to receive from the server sideconcurrency service 126 a request to retrieve the outstanding permitsfor a given token. The request for the outstanding permits received fromthe server side concurrency service 126 may comprise informationpertaining to the content asset and the user of the playback device 102.The database 132 may be configured to send the permits associated withthe token to the server side concurrency service 126. In addition, thedatabase 132 may be configured to delete one or more permits in responseto a determination by the server side concurrency service 126 that thepermit is expired (e.g., playback of the content asset has ended) orthat the permit is the oldest permit of a number of outstanding permits,as discussed herein.

The content delivery network 134 may be configured to store (e.g.,cache) one or more content asset segments. The content delivery network134 may serve cached objects to playback device 102 and may manage someor all aspects of the cached objects of playback device 102. Sucharchitecture may reduce the cost, resources, and bandwidth usage and mayimprove the security of playback device 102. For example, instead ofvalidating the cached objects by committing various resources and usingbandwidth to connect to a plurality of network-based resources, theplayback device 102 may only need to request the validation from thecontent delivery network 134. In turn, the content delivery network 134may connect to the plurality of network-based resources to refresh thecached objects and return the refreshed objects to playback device 102.

FIG. 2 shows an example method in accordance with an aspect of thedisclosure. At step 202, a request to access a content asset may bereceived. The request may be received from a playback device, such asthe playback device 102 shown in FIG. 1. The content asset may compriseany content capable of being played back by the playback device, such asa television asset, a movie asset, or any content that is capable ofbeing streamed via the Internet. The content asset may comprise aplurality of content asset segments. Each content asset segment maycorrespond to a portion of the content asset, such as a two-secondportion of the content asset. The request for the content asset may bereceived at a content server, such as the content server 120 shown inFIG. 1. The request for the content asset may comprise a token. Thetoken may be used by the playback device in requesting permission toaccess one or more content assets from the content server.

At step 204, permission may be obtained for the playback device. In oneexample, the permission may comprise a permit. However, it is understoodthat the permission is not limited to this example. The permit may grantto the playback device access to the content asset. The permit may begenerated by a server side concurrency service, such as the server sideconcurrency service 126 shown in FIG. 1. The permit may be generatedbased on the token. The token may comprise information associated withone or more of an identifier associated with the playback device and anidentifier associated with the content asset. The information maycomprise metadata. The content server may additionally or alternativelybe configured to send a playlist to the playback device. The playlistmay comprise a plurality of links associated with the content asset.Each of the links may correspond to a given content asset segment.

At step 206, a request for a content asset segment may be received. Therequest may comprise an identifier of the content asset segment beingrequested. The playback device may select from the playlist a linkcorresponding to the content asset segment. Upon selection of the linkto the content asset segment, the playback device may send to thecontent server the request for the content asset segment. The contentasset segment may correspond to a portion of the content asset, such asa two-second portion of the content asset. The playlist may beperiodically updated to reflect the newest available content assetsegments. The request for the content asset segment may or may notcomprise an indication to update the permit prior to granting access tothe content asset.

At step 208, access to the content asset segment may be granted. If therequest for the content asset segment does not comprise an indication toupdate the permit, the content server may grant access to the contentasset segment without the need to update the permit. It is understoodthat all or only a portion of the one or more requests for content assetsegments may comprise an indication to update the permit prior togranting access to the content asset segment by the playback device. Forexample, every fifth request for a content asset segment may comprise anindication to update the permit. Granting access to the content accesssegment by the playback device may comprise directing the playbackdevice to a content delivery network to retrieve the content assetsegment. Additionally or alternatively, the content server may determineto update the permit automatically in response to receiving the requestfor the content asset segment. The content server may be configured toupdate the permit each time a request for a content asset segment isreceived or may update the permit periodically.

At step 210, a request to download another content asset segment may bereceived. The request may comprise an identifier of the another contentasset segment. The another content asset segment may be different thanthe content asset segment requested by the playback device at step 206.The playback device may select the link to the another content assetsegment from the same playlist that contained the link to the contentasset segment. Additionally or alternatively, the playback device mayreceive another playlist containing a link to the another content assetsegment, and the playback device may be configured to select that linkin order to request playback of the another content asset segment. Uponselection of the link to the another content asset segment, the playbackdevice may send to the content server the request for the anothercontent asset segment. The request to download the another content assetsegment may comprise an indication to determine whether the number ofpermits associated with the token exceeds the desired or permittednumber of concurrent playback sessions. The indication may be anindication to determine, prior to granting or denying access to theanother content asset segment, after granting or denying access to theanother content asset segment, and/or asynchronously with granting ordenying access to the another content asset segment, whether the numberof permits associated with the token exceeds the permitted number ofconcurrent playback sessions

At step 212, it may be determined whether the number of permitsassociated with the token exceeds the permitted number of concurrentplayback sessions. The content server may be configured to determine anumber of outstanding permits associated with the one or more playbackdevices. The content server may be configured to retrieve from adatabase a number of permits associated with the token. The number ofpermits may correspond to the number of concurrent playback sessionspermitted by the playback device to one or more content assets. Thecontent server may compare the number of permits associated with thetoken to the number of concurrent playbacks permitted by the one or moreplayback devices.

At step 214, the playback device may be denied access to the anothercontent asset segment. The content server may deny access to the anothercontent asset segment by the playback device in response to determiningthat the number of outstanding permits exceeds the permitted number ofconcurrent playback sessions to one or more content assets by thatplayback device. The content server may send to the playback device anindication that access to the content asset segment has been denied. Thecontent server may not send additional content asset segments to theplayback device after determining that the number of permits exceeds thepermitted number of concurrent playback sessions to one or more contentassets by that playback device.

The content server may determine that a playback device is permitted toconcurrently view two content assets. The content server, upon receivinga request from the playback device to access a first content asset, maybe configured to obtain a first token for the playback device and mayuse the token to obtain a permit for accessing the first content asset.The playback device may use the permit to retrieve a playlist and torequest one or more content asset segments associated with the firstcontent asset. At a later time, the content server may receive a requestto access a second content asset and a request to access a third contentasset from the playback device. The content server, upon receiving arequest from the playback device to access the content asset, may beconfigured to obtain a second token for the playback device and may usethe second token to obtain a permit for accessing the second contentasset. Further, the content server, upon receiving a request from theplayback device to access the third content asset, may be configured toobtain a third token for the playback device and may use the token toobtain a permit for accessing the third content asset.

At an even later time, the content server may receive a request from theplayback device for a content asset segment associated with the firstcontent asset. The content server may determine that the number ofoutstanding permits associated with playback device (i.e., three) isgreater than the number of concurrent views permitted by the playbackdevice (i.e., two). In response to this determination, the contentserver may be configured to delete the oldest outstanding permit. Sincethe first permit was obtained prior to the second permit and the thirdpermit, the content server may be configured to delete the first permit.The content server may be configured to send to the manifest server anindication that playback of further content asset segments associatedwith the first content asset should be denied. Since the first permithas been deleted and only two permits remain, the playback device mayrequest playback of content asset segments associated with either of thesecond content asset or the third content asset.

Additionally or alternatively, the content server may receive a requestfrom the playback device for a content asset segment associated with thefirst content asset and may determine that the playback sessionassociated with the second content asset is expired. Thus, uponreceiving the request for a content asset segment associated with thefirst content asset, the content server may be configured to delete anyexpired permits, such as the second permit associated with the secondcontent asset. The content server may update the database to reflectthat the second permit should be deleted. Thus, the playback device mayrequest playback of content segments associated with either the firstcontent asset or the third content asset. However, future requests forcontent asset segments associated with the second content asset may bedenied by the content server as the second permit may no longer bevalid.

FIG. 3 shows another method 300. The method 300 may be used by aplayback device to request Internet Protocol (IP) Video Content from acontent server. However, it is understood that the method 300 is notlimited to IP video and may be used with any other types of protocols.

At step 302, a playback device may send, to an identity service, arequest to access content from a content server. The playback device maybe the playback device 102 shown in FIG. 1. The identity service may bethe identity service 122 shown in FIG. 1. The request to access thecontent may comprise a request to “sign in” to the content server.Signing into the content server may comprise sending the selectorservice an identifier associated with the playback device and/or anidentifier associated with a user of the playback device. The identityservice may authenticate the playback device and/or the user of theplayback device in order to determine whether or not access to thecontent server should be granted.

At step 304, the identity service may authenticate the playback deviceand/or the user of the playback device. Authenticating the playbackdevice and/or the user of the playback device may comprise determiningthat the identifier associated with the device and/or user of the devicematches one of a plurality of stored identifiers. In response toauthenticating the playback device and/or the user of the playbackdevice, the identity service may send to the playback device a token.The token may be used by the playback device in requesting a permit toaccess one or more content assets from the content server.

At step 306, the playback device may send to the selector service arequest for a content asset. The content asset may comprise any contentthat is capable of playback by the playback device, such as a televisionasset, a movie asset, or any type of content asset made available forstreaming over the Internet. The selector service may be the selectorservice 124 shown in FIG. 1. The request for the content asset maycomprise one or more identifiers associated with the content asset. Therequest for the content asset may comprise one or more identifiersassociated with the playback device and/or one or more identifiersassociated with a user of the playback device. The request mayadditionally or alternatively comprise the token received from theidentity service.

At step 308, the selector service may send to the identity service arequest for information associated with the playback device and/orinformation associated with one or more users of the playback device.The information may include but is not limited to an identifierassociated with the playback device, an identifier associated with theuser, an email address associated with the user, an identifier of thehousehold, an identifier of the service provider, and subscription levelinformation such as certain channels that the playback device may haveaccess to.

At step 310, the identity service may return the information associatedwith the playback device and/or information associated with one or moreusers of the playback device to the selector service.

At step 312, the selector service may send to the server sideconcurrency service a request for a permit. The server side concurrencyservice may be the server side concurrency service 126 shown in FIG. 1.The permit may grant by the playback device access to one or morecontent assets. The server side concurrency service, in response toreceiving the request for a permit, may generate a permit for theplayback device.

At step 314, the server side concurrency service may send to theselector service the permit. The permit may allow the playback device toaccess the particular content asset associated with the permit. Thenumber of permits granted to one or more playback devices may correspondto a number of desired or permitted concurrent playbacks of one or morecontent assets provided by the content server.

At step 316, the selector service may send to the playback device a linkto a manifestk. The manifest may comprise a link to one or moreplaylists associated with the content asset. The one or more playlistsmay comprise one or more links to one or more content asset segmentsthat can be requested by the playback device for playback. The manifestlink may be embedded with the token.

At step 318, the playback device may request from the manifest serviceone or more playlists associated with the content asset. The playbackdevice may select a link in the manifest, selection of the link causingthe playback device to send to the manifest service a request for one ormore playlists. The playlist may contain one or more links to one ormore content asset segments. The playlist may need to be updatedperiodically to reflect changes to the one or more content assetsegments. For example, as new content asset segments become available,the playback device may request a new playlist periodically in order toretrieve the new content asset segments. Additionally or alternatively,the playlist may contain one or more links corresponding to the entiretyof the content asset.

At step 320, the manifest service, in response to determining that thecontent session is valid, may be configured to determine a content assetplaylist for sending to the playback device and to send the contentasset playlist to the playback device. The content asset playlist may bedetermined based on the information contained in the request for thecontent asset playlist, such as a device identifier and/or one or morecharacteristics of the playback device. Determining whether the contentsession is valid may comprise determining whether the permit associatedwith the content session is valid.

At step 322, the manifest service, in response to determining that thecontent session is invalid, may send to the playback device anindication that playback of the content asset is forbidden. The manifestservice may send the playback device an indication that playback isforbidden in response to determining by the manifest service that thenumber of outstanding permits exceeds the number of desired or permittedaccesses to one or more content assets offered by one or more playbackdevices.

At step 324, the playback device may send to the redirect service arequest for a content asset segment. The redirect service may be theredirect service 130 shown in FIG. 1. The playback device may select oneor more links in the playlist provided by the manifest service. Uponselection of the one or more links, the playback device may send to theredirect service the request for the content asset segment correspondingto that link. The request for the content asset segment may comprise anindication for the redirect service to update the permit associated withthe token.

At step 326, the redirect service may send to the playback device a linkto the content asset segment. The link may be a link to a contentdelivery network where the content asset segment may be retrieved by theplayback device. The content delivery network may be the contentdelivery network 134 shown in FIG. 1. The content delivery network maybe configured to serve cached content asset segments to playback devicein response to requests for the content asset segment by the playbackdevice.

At step 328, if the request comprises an indication to update thepermit, the redirect service may send to the server side concurrencyservice a request to update the permit. Updating the permit may comprisedetermining that the number of permits associated with the token doesnot exceed the allowed number of concurrent playback sessions to one ormore content assets by one or more playback devices. Additionally oralternatively, the redirect service may determine to update the permitregardless of whether the request for the content asset segmentcomprises a request to update the token. The redirect service may beconfigured to update the permit each time a request for a content assetsegment is received, or at certain intervals (e.g., every thirdrequest).

At step 330, the server side concurrency service may send a request tothe database to retrieve outstanding permits associated with the token.The database may be the database 132 shown in FIG. 1. The database maybe configured to identify one or more permits associated with the token.For example, if the playback device is currently viewing a first contentasset and a second content asset, the database may be configured to sendto the playback device a first permit associated with the first contentasset playback session and a second permit associated with the secondcontent asset playback session.

At step 332, the database may send to the server side concurrencyservice the outstanding permits associated with the token. In theexample above, the database may return the first permit and the secondpermit to the server side concurrency service. The server sideconcurrency service, upon receipt of the permits from the database, maybe configured to determine whether the number of permits associated withthe token exceeds the number of allowed concurrent playback sessions tocontent asset by the playback device.

At step 334, the server side concurrency service may determine to deleteany expired permits. An expired permit may correspond to a contentsession that is no longer valid. For example, if the playback device hasstopped viewing a given content asset, that permit may be considered tobe expired. While the playback device may be responsible for notifyingthe content server that the playback device has finished viewing thecontent asset, the content server may not be able to rely on theplayback device to update the content server each time playback hascompleted. The server side concurrency service may determine that apermit is expired, for example, if the content session has been closedout by the playback device or if the content session has not been activefor a given time period.

At step 336, the server side concurrency service may delete the oldestpermits exceeding the concurrency limit. For example, the content servermay limit the number of concurrent playbacks by the playback device toone. The playback device may acquire a first permit on the token forplayback of a first content asset and, at a later time, may acquire asecond permit on the token for playback of a second content asset. Theserver side concurrency service, upon receiving a request to update thetoken associated with the second content session, may receive the firstpermit and the second permit from the database, determine that the firstpermit is the oldest permit exceeding the concurrency limit, and maydelete the first permit.

At step 338, the server side concurrency service may send to thedatabase an indication to refresh the permit. The server sideconcurrency service may send this indication in response to determiningthat the permit associated with the current playback session is valid(e.g., the permit is not expired and the permit was not deleted as theoldest permit exceeding the concurrency limit). Refreshing the permitmay comprise updating the permit to reflect a last access time of acontent asset associated with the permit.

At step 340, in response to determining that the token is not valid(e.g., in response to determining that the number of permits associatedwith the token exceeds the number of allowed concurrent playbacksessions), the server side concurrency service may send to the manifestservice an indication to stop the session. This may cause the manifestservice to deny any future requests by the playback device for a contentasset segment associated with the first content asset. However, theplayback device may still be enabled to receive content asset segmentsassociated with the second content asset as the permit associated withthe second content asset may still be valid.

At step 342, the manifest service may receive from the playback device arequest to refresh the playlist. The playback device may send thisrequest in order to retrieve a new playlist containing the most recentcontent asset segments. The updated playlist may contain only newcontent asset segments or may contain a portion of the segments of theprevious playlist and one or more new content asset segments.

FIG. 4 shows another method 400. The method 400 may be used by aplayback device to request Video On Demand (VOD) Content from a contentserver. However, it is understood that the method 400 is not limited toVOD content and may be used with any other types of content protocols.

At step 402, the playback device may send, to the identity service, arequest to sign into a content server. The playback device may be theplayback device 102 shown in FIG. 1. The identity service may be theidentity service 122 shown in FIG. 1. Signing into the content servermay comprise sending the selector service an identifier associated withthe playback device and/or an identifier associated with a user of theplayback device. The identity service may authenticate the playbackdevice and/or the user of the playback device based on the identifier todetermine whether or not access to the content server should be granted.

At step 404, the identity service may authenticate the playback deviceand/or the user of the playback device. Authenticating the playbackdevice may comprise determining that the playback device has access tothe content server. The identity service may compare the deviceidentifier of the playback device with a plurality of stored identifiersto determine that the playback device has access to the content server.Authenticating the user may comprise comparing a user identifier such asa user name and password with a plurality of stored user identifiers todetermine that the user has access to the content server. Grantingaccess to the content server may grant to the playback device access toone or more content assets stored in the content server. In response toauthenticating the playback device and/or the user, the identity servicemay send to the playback device a token. The token may be used by theplayback device in requesting a permit to access one or more contentassets from the content server.

At step 406, the playback device may send to the selector service arequest for a content asset. The content asset may comprise any contentthat is capable of playback by the playback device, such as a televisionasset, a movie asset, or any type of content asset made available forstreaming over the Internet. The selector service may be the selectorservice 124 shown in FIG. 1. The request for the content asset maycomprise one or more identifiers associated with the content asset. Therequest for the content asset may comprise one or more identifiersassociated with the playback device and/or one or more identifiersassociated with a user of the playback device. The request mayadditionally or alternatively comprise the token received from theidentity service.

At step 408, the selector service may send to the identity service arequest for information associated with the playback device and/orinformation associated with one or more users of the playback device.The information may include but is not limited to an identifierassociated with the playback device, an identifier associated with theuser, an email address associated with the user, an identifier of thehousehold, an identifier of the service provider, and subscription levelinformation such as certain channels that the playback device may haveaccess to.

At step 410, the identity service may return the information associatedwith the playback device and/or information associated with one or moreusers of the playback device to the selector service.

At step 412, the selector service may send to the server sideconcurrency service a request for a permit. The server side concurrencyservice may be the server side concurrency service 126 shown in FIG. 1.The permit may grant by the playback device access to one or morecontent assets. The server side concurrency service, in response toreceiving the request for a permit, may generate a permit for theplayback device.

At step 414, the server side concurrency service may send to theselector service the permit. The permit may allow the playback device toaccess the particular content asset associated with the permit. Thenumber of permits granted to one or more playback devices may correspondto a number of desired or permitted concurrent playbacks of one or morecontent assets provided by the content server.

At step 416, the selector service may send to the playback device amanifest link. The manifest may comprise a link to one or more playlistsassociated with the content asset. The one or more playlists maycomprise one or more links to one or more content asset segments thatcan be requested by the playback device for playback. The manifest linkmay be embedded with the token.

At step 418, the playback device may request one or more playlistsassociated with the content asset. The playback device may select a linkin the manifest, selection of the link causing the playback device tosend to the manifest service a request for one or more playlists. Theplaylist may contain one or more links to one or more content assetsegments. In the example of VOD content, the playlist may contain all ofthe links to the content asset segments for the requested content asset.However, it is understood that the playlist may contain only a portionof the links to the content asset segments.

At step 420, the manifest service, in response to determining that thecontent session is valid, may be configured to determine a content assetplaylist for sending to the playback device and to send the contentasset playlist to the playback device. The content asset playlist may bedetermined based on the information contained in the request for thecontent asset playlist, such as a device identifier and/or one or morecharacteristics of the playback device. Determining that the contentsession is valid may comprise determining that the number of outstandingpermits does not exceed the number of desired or permitted accesses toone or more content assets by one or more playback devices.

At step 422, the playback device may send to the redirect service arequest for a content asset segment. The redirect service may be theredirect service 130 shown in FIG. 1. The playback device may select oneor more links in the playlist provided by the manifest service. Uponselection of the one or more links, the playback device may send to theredirect service the request for the content asset segment correspondingto that link. The request for the content asset segment may comprise anindication for the redirect service to update the permit associated withthe token.

At step 424, the redirect service may send to the playback device a linkto the content asset segment. The link may be a link to a contentdelivery network where the content asset segment may be retrieved by theplayback device. The content delivery network may be the contentdelivery network 134 shown in FIG. 1. The content delivery network maybe configured to serve cached content asset segments to playback devicein response to requests for the content asset segment by the playbackdevice.

At step 426, if the request comprises an indication to update thepermit, the redirect service may send to the server side concurrencyservice a request to update the permit. Updating the permit may comprisedetermining that the number of permits associated with the token doesnot exceed the allowed number of concurrent playback sessions to one ormore content assets by one or more playback devices. Additionally oralternatively, the redirect service may determine to update the permitregardless of whether the request for the content asset segmentcomprises a request to update the token. The redirect service may beconfigured to update the permit each time a request for a content assetsegment is received, or at certain intervals (e.g., every thirdrequest).

At step 428, the server side concurrency service may send a request tothe database to retrieve outstanding permits associated with the token.The database may be the database 132 shown in FIG. 1. The database maybe configured to identify one or more permits associated with the token.For example, if the playback device is currently viewing a first contentasset and a second content asset, the database may be configured to sendto the playback device a first permit associated with the first contentasset playback session and a second permit associated with the secondcontent asset playback session.

At step 430, the database may send to the server side concurrencyservice the outstanding permits associated with the token. In theexample above, the database may return the first permit and the secondpermit to the server side concurrency service. The server sideconcurrency service, upon receipt of the permits from the database, maybe configured to determine whether the number of permits associated withthe token exceeds the number of allowed concurrent playback sessions tocontent asset by the playback device.

At step 432, the server side concurrency service may determine to deleteany expired permits. An expired permit may correspond to a contentsession that is no longer valid. For example, if the playback device hasstopped viewing a given content asset, that permit may be considered tobe expired. While the playback device may be responsible for notifyingthe content server that the playback device has finished viewing thecontent asset, the content server may not be able to rely on theplayback device to update the content server each time playback hascompleted. The server side concurrency service may determine that apermit is expired, for example, if the content session has been closedout by the playback device or if the content session has not been activefor a given time period.

At step 434, the server side concurrency service may delete the oldestpermits exceeding the concurrency limit. For example, the content servermay limit the number of concurrent playbacks by the playback device toone. The playback device may acquire a first permit on the token forplayback of a first content asset and, at a later time, may acquire asecond permit on the token for playback of a second content asset. Theserver side concurrency service, upon receiving a request to update thetoken associated with the second content session, may receive the firstpermit and the second permit from the database, determine that the firstpermit is the oldest permit exceeding the concurrency limit, and maydelete the first permit.

At step 436, the server side concurrency service may send to thedatabase an indication to refresh the permit. The server sideconcurrency service may send this indication in response to determiningthat the permit associated with the current playback session is valid(e.g., the permit is not expired and the permit was not deleted as theoldest permit exceeding the concurrency limit). Refreshing the permitmay comprise updating the permit to reflect a last access time of acontent asset associated with the permit.

At step 438, in response to determining that the token is not valid(e.g., in response to determining that the number of permits associatedwith the token exceeds the number of allowed concurrent playbacksessions), the server side concurrency service may send to the redirectservice an indication to stop the session. This may cause the manifestservice to deny any future requests by the playback device for a contentasset segment associated with the first content asset. However, theplayback device may still be enabled to receive content asset segmentsassociated with the second content asset as the permit associated withthe second content asset may still be valid.

At step 440, the redirect service, in response to determining that thecontent session is invalid, may send to the playback device anindication that playback of the content asset is forbidden. The redirectservice may send the playback device an indication that playback isforbidden in response to determining by the redirect service that thenumber of outstanding permits does exceeds the number of desired orpermitted accesses to one or more content assets offered by one or moreplayback devices.

FIG. 5 shows an example method for determining whether a playback devicehas exceeded a concurrency limit. At step 502, permission may receivedby a playback device for accessing content. In one example, thepermission may comprise a permit. However, it is understood that thepermission is not limited to this example. The playback device may be,for example, the playback device 102 shown in FIG. 1. The permit maygrant to the playback device access to a content asset. The contentasset may comprise any content capable of being played back by theplayback device, such as a television asset, a movie asset, or anycontent that is capable of being streamed via the Internet. The contentasset may comprise a plurality of content asset segments. The contentasset segments may correspond to a portion of the content asset, such asa two second portion of the content asset.

The permit may be generated by a server side concurrency service, suchas the server side concurrency service 126 shown in FIG. 1. The permitmay be generated based on the token. The token may comprise informationassociated with one or more of an identifier associated with theplayback device and an identifier associated with the content asset. Theinformation may comprise metadata. The content server may additionallyor alternatively be configured to send a playlist to the playbackdevice. The playlist may comprise a plurality of links associated withthe content asset. Each of the links may correspond to a given contentasset segment.

At step 504, a request for a content asset segment may be sent to acontent server 120. The request may comprise an identifier of thecontent asset segment being requested. The playback device may selectfrom the playlist a link corresponding to the content asset segment.Upon selection of the link to the content asset segment, the playbackdevice may send to the content server the request for the content assetsegment. The content asset segment may correspond to a portion of thecontent asset, such as a two-second portion of the content asset. Theplaylist may be periodically updated to reflect the newest availablecontent asset segments. The request for the content asset segment may ormay not comprise an indication to update the permit prior to grantingaccess to the content asset.

At step 506, the playback device may receive from the content server anindication that access to the content asset segment has been granted. Ifthe request for the content asset segment did not comprise an indicationto update the permit, the content server may grant access to the contentasset segment without the need to update the permit. It is understoodthat all or only a portion of the one or more requests for content assetsegments may comprise an indication to update the permit prior togranting access to the content asset segment by the playback device. Forexample, every fifth request for a content asset segment may comprise anindication to update the permit. Granting access to the content accesssegment by the playback device may comprise directing the playbackdevice to a content delivery network to retrieve the content assetsegment. Additionally or alternatively, the content server may determineto update the permit automatically in response to receiving the requestfor the content asset segment. The content server may be configured toupdate the permit each time a request for a content asset segment isreceived or may update the permit periodically.

At step 508, the content asset segment may be downloaded. In oneexample, receiving an indication that access to the content asset hasbeen granted may comprise receiving a link to a content delivery networkto retreive the content asset segment. Thus, the playback device may beconfigured to retreive the content asset segment from the contentdelivery network and to cause playback of the content asset segment viaone or more displays associated with the playback device.

At step 510, a request to download another content asset segment may besent. The request may comprise an identifier of the another contentasset segment. The another content asset segment may be different thanthe content asset segment requested by the playback device at step 504.The playback device may select the link to the another content assetsegment from the same playlist that contained the link to the contentasset segment. Additionally or alternatively, the playback device mayreceive another playlist containing a link to the another content assetsegment, and the playback device may be configured to select that linkin order to request playback of the another content asset segment. Uponselection of the link to the another content asset segment, the playbackdevice may send to the content server the request for the anothercontent asset segment. The request to download the another content assetsegment may comprise an indication to determine, prior to granting ordenying access to the another content asset segment, whether the numberof permits associated with the token exceeds the permitted or desirednumber of concurrent playback sessions by the playback device.

At step 512, the playback device may receive an indication that accessto the another content asset segment has been denied. The content servermay deny access to the content asset segment by the playback device inresponse to determining that the number of outstanding permits exceedsthe desired or permitted number of concurrent playback sessions to oneor more content assets by that playback device. The content server maysend to the playback device an indication that access to the contentasset segment has been denied. The content server may not sendadditional content asset segments to the playback device afterdetermining that the number of permits exceeds the permitted number ofconcurrent playback sessions to one or more content assets by thatplayback device.

FIG. 6 shows an example method for determining whether a plurality ofplayback devices have exceeded a concurrency limit. At step 602, a firstpermission may be sent to a first playback device for accessing content.In one example, the first permission may comprise a first permit.However, it is understood that the permission is not limited to thisexample. The first permit may be sent by a content server, such as thecontent server 120 shown in FIG. 1, to the first playback device inresponse to receipt at the content server from the first playback deviceof a request for a first content asset. The permit may grant to thefirst playback device access to the first content asset. The firstcontent asset may comprise one or more content asset segments. The firstpermit may be associated with a first token generated by the contentserver.

At step 604, a second permission may be sent to a second playback devicefor accessing content. In one example, the second permission maycomprise a second permit. However, it is understood that the permissionis not limited to this example. The second permit may be sent by acontent server, such as the content server 120 shown in FIG. 1, to thesecond playback device in response to receipt at the content server fromthe second playback device of a request for a second content asset. Thepermit may grant to the second playback device access to the secondcontent asset. The second content asset may comprise one or more contentasset segments. The second content asset may be a different contentasset than the first content asset. The second permit may be associatedwith a second token generated by the content server. Each of the firstplayback device and the second playback device may be one of a desktopcomputer, a laptop, a tablet, a smartphone, or a set-top box. The secondplayback device may be a different type of playback device than thefirst playback device.

At step 606, a request to download a content asset segment associatedwith the first content asset may be received from the first playbackdevice. The request to download the content asset segment may comprisean indication to determine, prior to granting or denying access to thecontent asset segment, whether the number of outstanding permitsassociated with the first playback device and the number of outstandingpermits associated with the second playback device exceeds the number ofavailable permits for the first playback device and the second playbackdevice. Receiving the request to download the content asset segment maycomprise receiving from the first playback device the first token.

At step 608, a number of outstanding permits associated with the firstplayback device and the second playback device may be determined. Thenumber of permits may be determined baed on information associated withthe first permit and/or information associated with the first token. Theinformation may comprise, for example, one or more of an identifier ofthe first playback device and an identifier of the second playbackdevice, and an identifier of an account associated with the firstplayback device and the second playback device. The information mayenable the content server to determine that the first playback deviceassociated with the first token is related to the second playback deviceassociated with the second token. For example, the information mayindicate that the first playback device and the second playback deviceare located in the same household and/or are associated with the sameaccount. Thus, a given concurrency restriction may apply to the firstplayback device and the second playback device.

At step 610, it may be determined whether the number of outstandingpermits associated with the first token and the number of outstandingpermits associated with the second token exceeds the number of availablepermits for the first token and the second token. For example, if theconcurrency restriction for the account associated with the firstplayback device and the second playback device is two concurrentplaybacks, and the first playback device is currently viewing a firstcontent asset and a second content asset while the second playbackdevice is currently viewing a third content asset, the content servermay determine that the number of outstanding permits exceeds the numberof available permits.

At step 612, the playback device may be denied access to the contentasset in response to the content server determining that the number ofoutstanding permits exceeds the number of available permits. In theexample above, in response to the first playback device requestingplayback of the second content asset, the content server may determinethat the concurrency limit has been exceeded. The content server maydelete the permit associated with the second content asset in responseto determining, for example, that the playback session associated withthe second content asset has expired or that the permit associated withthe second content asset is the oldest permit exceeding the concurrencylimit. Thus, the first playback device may be prevented from requestingany additional content asset segments associated with the second contentasset.

FIG. 7 depicts a computing device that may be used in various aspects,such as the servers, modules, and/or devices depicted in FIG. 1. Withregard to the example architecture of FIG. 1, the playback device 102,server 120, and/or the audio device 140 may each be implemented in aninstance of a computing device 700 of FIG. 7. The computer architectureshown in FIG. 7 shows a conventional server computer, workstation,desktop computer, laptop, tablet, network appliance, PDA, e-reader,digital cellular phone, or other computing node, and may be utilized toexecute any aspects of the computers described herein, such as toimplement the methods described in relation to FIGS. 2-6.

The computing device 700 may include a baseboard, or “motherboard,”which is a printed circuit board to which a multitude of components ordevices may be connected by way of a system bus or other electricalcommunication paths. One or more central processing units (CPUs) 704 mayoperate in conjunction with a chipset 706. The CPU(s) 704 may bestandard programmable processors that perform arithmetic and logicaloperations necessary for the operation of the computing device 700.

The CPU(s) 704 may perform the necessary operations by transitioningfrom one discrete physical state to the next through the manipulation ofswitching elements that differentiate between and change these states.Switching elements may generally include electronic circuits thatmaintain one of two binary states, such as flip-flops, and electroniccircuits that provide an output state based on the logical combinationof the states of one or more other switching elements, such as logicgates. These basic switching elements may be combined to create morecomplex logic circuits including registers, adders-subtractors,arithmetic logic units, floating-point units, and the like.

The CPU(s) 704 may be augmented with or replaced by other processingunits, such as GPU(s) 705. The GPU(s) 705 may comprise processing unitsspecialized for but not necessarily limited to highly parallelcomputations, such as graphics and other visualization-relatedprocessing.

A chipset 706 may provide an interface between the CPU(s) 704 and theremainder of the components and devices on the baseboard. The chipset706 may provide an interface to a random access memory (RAM) 708 used asthe main memory in the computing device 700. The chipset 706 may providean interface to a computer-readable storage medium, such as a read-onlymemory (ROM) 720 or non-volatile RAM (NVRAM) (not shown), for storingbasic routines that may help to start up the computing device 700 and totransfer information between the various components and devices. ROM 720or NVRAM may also store other software components necessary for theoperation of the computing device 700 in accordance with the aspectsdescribed herein.

The computing device 700 may operate in a networked environment usinglogical connections to remote computing nodes and computer systemsthrough local area network (LAN) 716. The chipset 706 may includefunctionality for providing network connectivity through a networkinterface controller (NIC) 722, such as a gigabit Ethernet adapter. ANIC 722 may be capable of connecting the computing device 700 to othercomputing nodes over a network 716. It should be appreciated thatmultiple NICs 722 may be present in the computing device 700, connectingthe computing device to other types of networks and remote computersystems.

The computing device 700 may be connected to a mass storage device 728that provides non-volatile storage for the computer. The mass storagedevice 728 may store system programs, application programs, otherprogram modules, and data, which have been described in greater detailherein. The mass storage device 728 may be connected to the computingdevice 700 through a storage controller 724 connected to the chipset706. The mass storage device 728 may consist of one or more physicalstorage units. A storage controller 724 may interface with the physicalstorage units through a serial attached SCSI (SAS) interface, a serialadvanced technology attachment (SATA) interface, a fiber channel (FC)interface, or other type of interface for physically connecting andtransferring data between computers and physical storage units.

The computing device 700 may store data on a mass storage device 728 bytransforming the physical state of the physical storage units to reflectthe information being stored. The specific transformation of a physicalstate may depend on various factors and on different implementations ofthis description. Examples of such factors may include, but are notlimited to, the technology used to implement the physical storage unitsand whether the mass storage device 728 is characterized as primary orsecondary storage and the like.

For example, the computing device 700 may store information to the massstorage device 728 by issuing instructions through a storage controller724 to alter the magnetic characteristics of a particular locationwithin a magnetic disk drive unit, the reflective or refractivecharacteristics of a particular location in an optical storage unit, orthe electrical characteristics of a particular capacitor, transistor, orother discrete component in a solid-state storage unit. Othertransformations of physical media are possible without departing fromthe scope and spirit of the present description, with the foregoingexamples provided only to facilitate this description. The computingdevice 700 may read information from the mass storage device 728 bydetecting the physical states or characteristics of one or moreparticular locations within the physical storage units.

In addition to the mass storage device 728 described herein, thecomputing device 700 may have access to other computer-readable storagemedia to store and retrieve information, such as program modules, datastructures, or other data. It should be appreciated by those skilled inthe art that computer-readable storage media may be any available mediathat provides for the storage of non-transitory data and that may beaccessed by the computing device 700.

By way of example and not limitation, computer-readable storage mediamay include volatile and non-volatile, transitory computer-readablestorage media and non-transitory computer-readable storage media, andremovable and non-removable media implemented in any method ortechnology. Computer-readable storage media includes, but is not limitedto, RAM, ROM, erasable programmable ROM (“EPROM”), electrically erasableprogrammable ROM (“EEPROM”), flash memory or other solid-state memorytechnology, compact disc ROM (“CD-ROM”), digital versatile disk (“DVD”),high definition DVD (“HD-DVD”), BLU-RAY, or other optical storage,magnetic cassettes, magnetic tape, magnetic disk storage, other magneticstorage devices, or any other medium that may be used to store thedesired information in a non-transitory fashion.

A mass storage device, such as the mass storage device 728 depicted inFIG. 7, may store an operating system utilized to control the operationof the computing device 700. The operating system may comprise a versionof the LINUX operating system. The operating system may comprise aversion of the WINDOWS SERVER operating system from the MICROSOFTCorporation. According to additional aspects, the operating system maycomprise a version of the UNIX operating system. Various mobile phoneoperating systems, such as IOS and ANDROID, may also be utilized. Itshould be appreciated that other operating systems may also be utilized.The mass storage device 728 may store other system or applicationprograms and data utilized by the computing device 700.

The mass storage device 728 or other computer-readable storage media mayalso be encoded with computer-executable instructions, which, whenloaded into the computing device 700, transforms the computing devicefrom a general-purpose computing system into a special-purpose computercapable of implementing the aspects described herein. Thesecomputer-executable instructions transform the computing device 700 byspecifying how the CPU(s) 704 transition between states, as describedherein. The computing device 700 may have access to computer-readablestorage media storing computer-executable instructions, which, whenexecuted by the computing device 700, may perform the methods describedin relation to FIGS. 2-6.

A computing device, such as the computing device 700 depicted in FIG. 7,may also include an input/output controller 732 for receiving andprocessing input from a number of input devices, such as a keyboard, amouse, a touchpad, a touch screen, an electronic stylus, or other typeof input device. Similarly, an input/output controller 732 may provideoutput to a display, such as a computer monitor, a flat-panel display, adigital projector, a printer, a plotter, or other type of output device.It will be appreciated that the computing device 700 may not include allof the components shown in FIG. 7, may include other components that arenot explicitly shown in FIG. 7, or may utilize an architecturecompletely different than that shown in FIG. 7.

As described herein, a computing device may be a physical computingdevice, such as the computing device 700 of FIG. 7. A computing node mayalso include a virtual machine host process and one or more virtualmachine instances. Computer-executable instructions may be executed bythe physical hardware of a computing device indirectly throughinterpretation and/or execution of instructions stored and executed inthe context of a virtual machine.

It is to be understood that the methods and systems are not limited tospecific methods, specific components, or to particular implementations.It is also to be understood that the terminology used herein is for thepurpose of describing particular embodiments only and is not intended tobe limiting.

As used in the specification and the appended claims, the singular forms“a,” “an,” and “the” include plural referents unless the context clearlydictates otherwise. Ranges may be expressed herein as from “about” oneparticular value, and/or to “about” another particular value. When sucha range is expressed, another embodiment includes from the oneparticular value and/or to the other particular value. Similarly, whenvalues are expressed as approximations, by use of the antecedent“about,” it will be understood that the particular value forms anotherembodiment. It will be further understood that the endpoints of each ofthe ranges are significant both in relation to the other endpoint, andindependently of the other endpoint.

“Optional” or “optionally” means that the subsequently described eventor circumstance may or may not occur, and that the description includesinstances where said event or circumstance occurs and instances where itdoes not.

Throughout the description and claims of this specification, the word“comprise” and variations of the word, such as “comprising” and“comprises,” means “including but not limited to,” and is not intendedto exclude, for example, other components, integers or steps.“Exemplary” means “an example of” and is not intended to convey anindication of a preferred or ideal embodiment. “Such as” is not used ina restrictive sense, but for explanatory purposes.

Components are described that may be used to perform the describedmethods and systems. When combinations, subsets, interactions, groups,etc., of these components are described, it is understood that whilespecific references to each of the various individual and collectivecombinations and permutations of these may not be explicitly described,each is specifically contemplated and described herein, for all methodsand systems. This applies to all aspects of this application including,but not limited to, operations in described methods. Thus, if there area variety of additional operations that may be performed it isunderstood that each of these additional operations may be performedwith any specific embodiment or combination of embodiments of thedescribed methods.

The present methods and systems may be understood more readily byreference to the following detailed description of preferred embodimentsand the examples included therein and to the Figures and theirdescriptions.

As will be appreciated by one skilled in the art, the methods andsystems may take the form of an entirely hardware embodiment, anentirely software embodiment, or an embodiment combining software andhardware aspects. Furthermore, the methods and systems may take the formof a computer program product on a computer-readable storage mediumhaving computer-readable program instructions (e.g., computer software)embodied in the storage medium. More particularly, the present methodsand systems may take the form of web-implemented computer software. Anysuitable computer-readable storage medium may be utilized including harddisks, CD-ROMs, optical storage devices, or magnetic storage devices.

Embodiments of the methods and systems are described below withreference to block diagrams and flowchart illustrations of methods,systems, apparatuses and computer program products. It will beunderstood that each block of the block diagrams and flowchartillustrations, and combinations of blocks in the block diagrams andflowchart illustrations, respectively, may be implemented by computerprogram instructions. These computer program instructions may be loadedon a general-purpose computer, special-purpose computer, or otherprogrammable data processing apparatus to produce a machine, such thatthe instructions which execute on the computer or other programmabledata processing apparatus create a means for implementing the functionsspecified in the flowchart block or blocks.

These computer program instructions may also be stored in acomputer-readable memory that may direct a computer or otherprogrammable data processing apparatus to function in a particularmanner, such that the instructions stored in the computer-readablememory produce an article of manufacture including computer-readableinstructions for implementing the function specified in the flowchartblock or blocks. The computer program instructions may also be loadedonto a computer or other programmable data processing apparatus to causea series of operational steps to be performed on the computer or otherprogrammable apparatus to produce a computer-implemented process suchthat the instructions that execute on the computer or other programmableapparatus provide steps for implementing the functions specified in theflowchart block or blocks.

The various features and processes described herein may be usedindependently of one another, or may be combined in various ways. Allpossible combinations and sub-combinations are intended to fall withinthe scope of this disclosure. In addition, certain methods or processblocks may be omitted in some implementations. The methods and processesdescribed herein are also not limited to any particular sequence, andthe blocks or states relating thereto may be performed in othersequences that are appropriate. For example, described blocks or statesmay be performed in an order other than that specifically described, ormultiple blocks or states may be combined in a single block or state.The example blocks or states may be performed in serial, in parallel, orin some other manner. Blocks or states may be added to or removed fromthe described example embodiments. The example systems and componentsdescribed herein may be configured differently than described. Forexample, elements may be added to, removed from, or rearranged comparedto the described example embodiments.

It will also be appreciated that various items are illustrated as beingstored in memory or on storage while being used, and that these items orportions thereof may be transferred between memory and other storagedevices for purposes of memory management and data integrity.Alternatively, in other embodiments, some or all of the software modulesand/or systems may execute in memory on another device and communicatewith the illustrated computing systems via inter-computer communication.Furthermore, in some embodiments, some or all of the systems and/ormodules may be implemented or provided in other ways, such as at leastpartially in firmware and/or hardware, including, but not limited to,one or more application-specific integrated circuits (“ASICs”), standardintegrated circuits, controllers (e.g., by executing appropriateinstructions, and including microcontrollers and/or embeddedcontrollers), field-programmable gate arrays (“FPGAs”), complexprogrammable logic devices (“CPLDs”), etc. Some or all of the modules,systems, and data structures may also be stored (e.g., as softwareinstructions or structured data) on a computer-readable medium, such asa hard disk, a memory, a network, or a portable media article to be readby an appropriate device or via an appropriate connection. The systems,modules, and data structures may also be transmitted as generated datasignals (e.g., as part of a carrier wave or other analog or digitalpropagated signal) on a variety of computer-readable transmission media,including wireless-based and wired/cable-based media, and may take avariety of forms (e.g., as part of a single or multiplexed analogsignal, or as multiple discrete digital packets or frames). Suchcomputer program products may also take other forms in otherembodiments. Accordingly, the present invention may be practiced withother computer system configurations.

While the methods and systems have been described in connection withpreferred embodiments and specific examples, it is not intended that thescope be limited to the particular embodiments set forth, as theembodiments herein are intended in all respects to be illustrativerather than restrictive.

Unless otherwise expressly stated, it is in no way intended that anymethod set forth herein be construed as requiring that its operations beperformed in a specific order. Accordingly, where a method claim doesnot actually recite an order to be followed by its operations or it isnot otherwise specifically stated in the claims or descriptions that theoperations are to be limited to a specific order, it is no way intendedthat an order be inferred, in any respect. This holds for any possiblenon-express basis for interpretation, including: matters of logic withrespect to arrangement of steps or operational flow; plain meaningderived from grammatical organization or punctuation; and the number ortype of embodiments described in the specification.

It will be apparent to those skilled in the art that variousmodifications and variations may be made without departing from thescope or spirit of the present disclosure. Other embodiments will beapparent to those skilled in the art from consideration of thespecification and practices described herein. It is intended that thespecification and example figures be considered as exemplary only, witha true scope and spirit being indicated by the following claims.

What is claimed:
 1. A method comprising: receiving, from a user device,a request to access a content asset that comprises one or more segments,the request comprising a token; obtaining, using the token, anindication of a permission for the user device to access the contentasset; receiving, from the user device, a request for a segment of theone or more segments of the content asset; granting, based on theindication of the permission, the user device access to the segment;receiving, from the user device, a request for another segment of theone or more segments of the content asset; determining that a number ofpermissions currently granted to one or more user devices comprising theuser device exceeds a number of desired concurrent communicationsessions by the one or more user devices; and denying, based on saiddetermining, the user device access to the another segment.
 2. Themethod of claim 1, wherein the request for the another segment comprisesan indication to determine, prior to granting or denying access to theanother segment, whether the number of permissions currently granted tothe one or more user devices exceeds the number of desired concurrentcommunication sessions by the one or more user devices.
 3. The method ofclaim 1, further comprising: authenticating the user device; generating,in response to authenticating the user device, the token; and sending,to the user device, the token.
 4. The method of claim 3, furthercomprising storing, as information associated with the token, at leastone of an identifier associated with the user device and an identifierassociated with the content asset.
 5. The method of claim 1, furthercomprising sending, to the user device, a playlist comprising aplurality of links associated with the content asset, the plurality oflinks comprising a first link associated with the segment and a secondlink associated with the another segment.
 6. The method of claim 1,wherein granting access to the segment by the user device comprisesdirecting the user device to a content delivery network to retrieve thesegment.
 7. The method of claim 1, further comprising: retrieving, froma database, the number of permissions currently granted to the one ormore user devices; and deleting a given one of the permissions inresponse determining that a communication session associated with thepermission is expired.
 8. A method comprising: receiving, by a userdevice from a content server, an indication of a permission granting theuser device access to a content asset; sending, by the user device tothe content server, a request for a segment of the content asset;receiving, by the user device from the content server, an indicationthat access to the segment has been granted; retrieving, by the userdevice, the segment; sending, by the user device to the content server,a request for another segment of the content asset; and receiving, bythe user device from the content server and based on a determination bythe content server that the number of permissions currently granted tothe user device exceeds the number of desired concurrent communicationsessions by the user device, an indication that access to the anothersegment has been denied.
 9. The method of claim 8, wherein the requestfor the another segment comprises an indication to determine, prior togranting or denying access to the another segment, whether the number ofpermissions currently granted to the user device exceeds the number ofdesired concurrent communication sessions by the user device.
 10. Themethod of claim 8, wherein the indication of the permission is generatedin response to receipt at the content server of a token associated withthe user device.
 11. The method of claim 10, wherein the token comprisesinformation associated with at least one of an identifier of the userdevice and an identifier of the content asset.
 12. The method of claim8, further comprising receiving, from the content server, a playlistcomprising a plurality of links associated with the content asset, theplurality of links comprising a first link associated with the segmentand a second link associated with the another segment.
 13. The method ofclaim 8, wherein receiving an indication that access to the segment hasbeen granted comprises receiving a link to a content delivery network toretrieve the segment.
 14. The method of claim 8, wherein the number ofpermissions currently granted to the one or more user devices is storedin a database associated with the content server.
 15. A methodcomprising: sending, to a first user device, a first permissionassociated with a first token associated with the first user device, thefirst permission granting to the first user device access to a firstcontent asset that comprises one or more segments; sending, to a seconduser device, a second permission associated with a second tokenassociated with the second user device, the second permission grantingto the second user device access to a second content asset thatcomprises one or more other segments; receiving, from the first userdevice, a request for access to a segment associated with the firstcontent asset; determining, based on information associated with thefirst token, a number of outstanding permissions associated with thefirst user device and the second user device; determining whether thenumber of outstanding permissions associated with the first user deviceand the second user device exceeds a number of desired concurrentcommunication sessions by the first user device and the second userdevice to one or more content assets; and denying, based on saiddetermining, access to the requested segment by the first user device.16. The method of claim 15, wherein the information associated with thefirst token comprises at least one of: an identifier of the first userdevice and the second user device and an identifier of an accountassociated with the first user device and the second user device. 17.The method of claim 15, further comprising: authenticating the firstuser device and the second user device; generating, in response toauthenticating the first user device, the first token; sending, to thefirst user device, the first token; generating, in response toauthenticating the second user device, the second token; and sending, tothe second user device, the second token.
 18. The method of claim 15,further comprising: retrieving, from a database, the number ofpermissions currently granted to the first user device and the seconduser device; and deleting a given one of the permissions in responsedetermining that a communication session associated with the permissionis expired.
 19. The method of claim 15, wherein the request for accessto the segment comprises the first token.
 20. The method of claim 15,wherein each of the first user device and the second user device are oneof a desktop computer, a laptop, a tablet, a smartphone, or a set-topbox, the second user device being a different type of user device thanthe first user device.